SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TMDOCU_CLIE_I06]                        
/*---------------------------------------------------------*/                            
/*---Empresa              : OFISIS S.A.                  --*/                            
/*---Cliente              : OFISIS S.A.                  --*/                            
/*---Sistema              : Tesoreria                    --*/                            
/*---M¸dulo               : Empresa                      --*/                            
/*---Programa             : Procedimiento para cargar    --*/                            
/*---                       detalle rendicion            --*/                                  
/*---Script               : ttproc_i.sql                 --*/                            
/*---Nombre SP            : SP_TMDOCU_CLIE_I06           --*/                            
/*---Desarrollado por     : Luis Calixto        --*/                            
/*---Fecha Creaci¸n       : 28/10/2011                   --*/                            
/*---Base Datos           : Microsoft Sql Server         --*/                            
/*---Versi¸n              : 9.0.4                        --*/                
/*---Invoca a SP          :                              --*/                
/*---------------------------------------------------------*/                
/*---------------------------------------------------------*/                            
/*---Modificado 1 por     :                              --*/                            
/*---Fecha Modificaci¸n   :                              --*/                             
/*---Detalle Modificaci¸n :                              --*/                            
/*---------------------------------------------------------*/                            
/*---------------------------------------------------------*/                            
/*---Comentarios                                         --*/                            
/*---                                                    --*/                            
/*      
                    
DECLARE @INNU_PROC    
BEGIN    
Exec SP_TMDOCU_CLIE_I06   '01', 'OFISIS','001', 3     
END    
SELECT @INNU_PROC    
             
*/                      
/*---------------------------------------------------------*/                           
@ISCO_EMPR   TD_VC_002,                                
@ISCO_USUA_MODI  TD_VC_008_USUA ,                         
@ISCO_UNID_CNTB  TD_VC_003,    
@INNU_PROC_CARG  TD_IN_001 OUTPUT                    
                       
As                          
Declare                            
                      
                      
@CNNU_FILA    TD_IN_001 ,                       
@CSCO_CLIE    TD_VC_020  ,                        
@CSTI_DOCU    TD_VC_003  ,                          
@CSNU_DOCU    TD_VC_020  ,                          
@CSCO_MONE    TD_VC_003  ,                          
@CDFE_EMIS    TD_DT_001  ,                          
@CDFE_VENC    TD_DT_001  ,                           
@CNFA_CAMB    TD_NU_015_006 ,                     
@CSTI_OPER    TD_VC_003 ,                          
@CSCO_COND_PAGO    TD_VC_003 ,                          
@CSDE_OBSE    TD_VC_100  ,                           
@CNIM_AFEC    TD_NU_016_004  ,                          
@CNIM_INAF    TD_NU_016_004  ,                         
@CSCO_IMP1    TD_VC_020  ,                         
@CNIM_IMP1    TD_NU_016_004  ,                          
@CNIM_TOTA    TD_NU_016_004  ,                         
@CSCO_CNTA    TD_VC_020  ,                          
@CSTI_AUXI    TD_VC_001  ,                          
@CSCO_AUXI    TD_VC_020  ,                          
@CSCO_ORDE_SERV  TD_VC_020 ,         
@CNPO_DIST TD_NU_009_004,               
                      
                          
@VSNU_SERI_EXIS     TD_VC_004  ,                        
@VSTI_DOCU   TD_VC_003  ,                        
@VSST_SERI   TD_VC_001  ,                        
@VSNU_SERI_00  TD_VC_020  ,                          
@VSNU_SERI_01  TD_VC_020  ,                         
@VSNU_SERI_02  TD_VC_020  ,                        
@VSCO_CLIE   TD_VC_020  ,                     
@VNNU_LONG   TD_IN_001   ,                        
@VSCO_MONE   TD_VC_003  ,                        
@VSFE_EMIS_DD  TD_VC_002  ,                        
@VSFE_EMIS_MM  TD_VC_002  ,                        
@VSFE_EMIS_AA  TD_VC_004  ,                 
@VSTI_SITU_CXCB  TD_VC_001  ,                        
@VSST_CIER_CNTB  TD_VC_001  ,                        
@VSFE_REGI_DD  TD_VC_002  ,                     
@VSFE_REGI_MM  TD_VC_002  ,                        
@VSFE_REGI_AA  TD_VC_004  ,                        
@VSFA_CAMB_EVAL  TD_VC_010,                        
@VNFE_EMIS_AA   TD_IN_001,                   
@VNFE_EMIS_MM TD_IN_001,                      
@VSNO_CORT_PROV  TD_VC_050,                      
@VSTI_OPRG_SIPR TD_VC_003,                      
@VSCO_TIAU_PROV TD_VC_001,                  
@VSCO_CNTA_EMPR  TD_VC_020,                      
@VSST_AUXI_EMPR  TD_VC_001,                      
@VSST_DOCU_CNTB  TD_VC_001,                      
@VSST_MONE   TD_VC_001,                       
@VSCO_MONE_CNTA  TD_VC_003,                      
@VSST_ORDE_SERV  TD_VC_001,                      
@VNNV_INFO_CNTA TD_IN_001,                      
@VNPC_IMPT   TD_IN_001,                      
@VNNU_CONT   TD_IN_001,                       
@VNIM_CONV   TD_NU_016_004,                      
@CDFE_PAGO   TD_DT_001,                       
@VSTI_AUXI_EMPR   TD_VC_003,                      
@VSCO_AUXI_EMPR TD_VC_020,                      
@VSCO_ORDE_SERV TD_VC_020,                      
@VNNU_LONG_SERI  TD_IN_001,                      
@VNNU_ERRO    TD_IN_001,                      
@VSST_PROV_AUTO TD_VC_001,                       
@VSCO_COND_CONT  TD_VC_001,                      
@VSST_ASTO_RESU TD_VC_001,                      
@VSCO_MONE_NACI TD_VC_003,                      
@VSCO_MONE_EXTR TD_VC_003,                      
@VNFA_CAMB_EXTR TD_NU_015_006,                      
@VSTI_CAMB TD_VC_001,                      
@VSTI_ORIG TD_VC_001,                      
@VSST_AUXI_0008 TD_VC_001,                      
@VSST_ACTU_PROV TD_VC_001,                    
@VSST_ACTU_REND TD_VC_001,                    
@VDFE_VENC_DIST TD_DT_001,                    
@VSTI_DOCU_DIST TD_VC_001,                    
@VSNU_DOCU_DIST TD_VC_020,                
@VSNU_DOCU TD_VC_020,        
@VSCO_TIAU_CLIE TD_VC_001,                  
--@VSST_DOCU_CNTB TD_VC_001                
@VSST_ACTU_CLIE TD_VC_001,                
@VSST_INTE_BACH TD_VC_001,                
@VSCO_TIPO_OPER TD_VC_003,                
@VSCO_TIPO_OPEG TD_VC_003,                
@VSNU_ASTO TD_VC_010,                
@VNPC_IMP1 TD_NU_009_004,              
@VNNU_DIAS TD_IN_001         
                         
                         
Begin Tran SP_TMDOCU_PROV_I06                            
                            
--DELETE #TWDOCC_ERRO_02                        
                  
 SELECT @VNNU_CONT = 0        
     
 SELECT @INNU_PROC_CARG = ISNULL(MAX(NU_PROC_CARG),0)+1    
 FROM TMDOCU_CLIE    
 WHERE CO_EMPR = @ISCO_EMPR             
                      
 Declare CU_TMDOCU_CLIE_I06 Cursor For                            
 SELECT         
 CO_CLIE ,  CO_TIPO_DOCU , NU_DOCU_CLIE ,  CO_MONE ,  FE_EMIS ,  FE_VENC ,                        
 FA_CAMB ,  CO_COND_PAGO, CO_TIPO_OPER ,  DE_OBSE,  IM_AFEC ,                        
 IM_INAF ,  CO_IMP1 ,   IM_IMP1,  IM_TOTA,  CO_CNTA_EMPR,  TI_AUXI ,                        
 CO_AUXI ,  CO_ORDE_SERV                   
 FROM #TWDOCC_ERRO_03          
 GROUP BY CO_CLIE ,  CO_TIPO_DOCU , NU_DOCU_CLIE ,  CO_MONE ,  FE_EMIS ,  FE_VENC ,                        
 FA_CAMB ,  CO_COND_PAGO, CO_TIPO_OPER ,  DE_OBSE,  IM_AFEC ,                        
 IM_INAF ,  CO_IMP1 ,   IM_IMP1,  IM_TOTA,  CO_CNTA_EMPR,  TI_AUXI ,                        
 CO_AUXI ,  CO_ORDE_SERV             
         
                           
 Open  CU_TMDOCU_CLIE_I06                             
 Fetch CU_TMDOCU_CLIE_I06                
 Into                       
 @CSCO_CLIE  , @CSTI_DOCU  , @CSNU_DOCU  , @CSCO_MONE  , @CDFE_EMIS  , @CDFE_VENC  , @CNFA_CAMB  ,                       
 @CSCO_COND_PAGO ,  @CSTI_OPER  , @CSDE_OBSE  , @CNIM_AFEC  , @CNIM_INAF  , @CSCO_IMP1  , @CNIM_IMP1  , @CNIM_TOTA  ,                       
 @CSCO_CNTA ,  @CSTI_AUXI  , @CSCO_AUXI  , @CSCO_ORDE_SERV                      
                       
 While (@@FETCH_STATUS = 0)                              
  Begin                              
   If (@@FETCH_STATUS < 0)                              
    Begin                              
  RAISERROR 20001 'FIN DE ARCHIVO'                              
  Close CU_TMDOCU_CLIE_I06                              
  Deallocate CU_TMDOCU_CLIE_I06                              
  Rollback tran                              
  Return              
    End                              
                    
  ----VALIDACIONES------------                      
                    
  SELECT @VNPC_IMPT = PC_IMPT                      
  FROM TTIMPT                       
  WHERE CO_IMPT = @CSCO_IMP1                          
                    
  Select  @VSCO_COND_CONT = CO_COND_CONT,            
  @VSCO_TIAU_CLIE = CO_TIAU_CLIE  , @VSTI_OPRG_SIPR =  TI_OPRG_SIPR,                      
  @VSCO_MONE_NACI = CO_MONE_DEFA, @VSCO_MONE_EXTR = CO_MONE_EXTR,                       
  @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG                       
  From TMPARA_TESO                            
  Where CO_EMPR = @ISCO_EMPR                         
                     
                          
  Select  @VSST_AUXI_0008 = ST_AUXI_0008                            
  From TTTIPO_OPER                            
  Where  CO_EMPR = @ISCO_EMPR                            
  And CO_TIPO_OPER =  @CSTI_OPER                
                     
                     
  IF EXISTS (SELECT * FROM TMDOCU_CLIE                
  WHERE CO_EMPR = @ISCO_EMPR                      
  AND CO_CLIE = @CSCO_CLIE                      
  AND CO_TIPO_DOCU = @CSTI_DOCU                      
  AND NU_DOCU_CLIE = @CSNU_DOCU )                      
  SELECT @VSST_ACTU_CLIE = 'S'                      
  ELSE                      
  SELECT @VSST_ACTU_CLIE = 'N'                      
                              
  IF @VSST_ACTU_CLIE = 'N'                 
  BEGIN                      
   Select @VSST_ASTO_RESU = ST_ASTO_RESU                            
   From TMOPRC_RESU T1, TTTIPO_OPER T2, TDTIPO_OPER T3                            
   Where T1.CO_EMPR = @ISCO_EMPR                            
   And T2.CO_TIPO_OPER = @CSTI_OPER                            
   And T1.CO_EMPR = T2.CO_EMPR                            
   And T2.CO_EMPR = T3.CO_EMPR                            
   And T2.CO_TIPO_OPER = T3.CO_TIPO_OPER                            
   And T1.CO_OPRC_CNTB = T3.CO_OPRC_CNTB              
                       
   If @CSCO_MONE != @VSCO_MONE_NACI And @CSCO_MONE != @VSCO_MONE_EXTR                            
   Select @VNFA_CAMB_EXTR = (SELECT OFITESO.dbo.FN_TCFACT_CAMB_Q02(@CSCO_MONE, @VSCO_MONE_EXTR,                            
   @CDFE_EMIS, 1, @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, @CNFA_CAMB))                            
   Else                             
   Select @VNFA_CAMB_EXTR = 1.00                       
                
   Select @VSST_INTE_BACH = ST_INTE_BACH,                    
   @VSCO_TIPO_OPER = CO_TIPO_OPER,                    
   @VSCO_TIPO_OPEG = CO_TIPO_OPEG                    
   From TMPARA_TESO Where CO_EMPR = @ISCO_EMPR                      
               
   Select  @VNNU_DIAS = NU_DIAS              
   From    TTTIPO_COND              
   Where  CO_EMPR = @ISCO_EMPR              
   And CO_COND_PAGO = @CSCO_COND_PAGO              
   And TI_COND  != ( Select   TI_DOCU               
   From  TTDOCU_CNTB              
   Where  ST_DOCU_0006 = 'S' )              
   And ST_CTCB  = 'S'              
              
   Select  @VNPC_IMP1 = PC_IMPT              
   From  TTIMPT              
   Where  CO_IMPT = @CSCO_IMP1              
               
   /*Busco el ultimo correlativo usado para insertar el nro de comprobante*/                       
   If @VSCO_TIPO_OPER != @CSTI_OPER  And                       
   @VSCO_TIPO_OPEG != @CSTI_OPER                  
   Begin                    
    EXEC SP_TTULTI_ASTO_Q04 @ISCO_EMPR,@ISCO_USUA_MODI, @ISCO_UNID_CNTB, @CSTI_OPER, @CDFE_EMIS,                      
    @VSNU_ASTO  output                     
             
    If @@error <> 0                      
     Begin                      
     Rollback tran                      
     Return                      
     End          
                            
   End                        
               
   Insert Into TMDOCU_CLIE(                      
   CO_EMPR, CO_TIPO_DOCU, NU_DOCU_CLIE, CO_CLIE, CO_MONE,                       
   CO_TIPO_OPER, CO_COND_PAGO, FE_EMIS, CO_UNID_CONC, FE_VENC,                       
   FE_PROG_COBR, FE_DESP, FA_TIPO_CAMB, IM_BRUT_AFEC, IM_BRUT_INAF,IM_BRUT_EXON,                       
   IM_GAFI, IM_MORA, IM_FLET,ST_AFEC_GAFI, ST_AFEC_MORA, ST_AFEC_FLET,                       
   ST_DCT1_BRAF, ST_DCT1_BRIN,ST_DCT1_BREX, ST_DCT1_GAFI, ST_DCT1_MORA, ST_DCT1_FLET,                       
   ST_DCT2_BRAF, ST_DCT2_BRIN,ST_DCT2_BREX,ST_DCT2_GAFI, ST_DCT2_MORA, ST_DCT2_FLET,                      
   PC_DCT1, IM_DCT1, PC_DCT2, IM_DCT2, CO_IMP1, PC_IMP1, IM_IMP1, CO_IMP2,                       
   PC_IMP2, IM_IMP2, CO_IMP3,PC_IMP3, IM_IMP3, IM_TOTA, IM_PAGA, TI_DOCU_ORIG,                       
   NU_DOCU_ORIG, FE_DOCU_ORIG, ST_CONT, DE_OBSE,CO_ESTA_DOCU, CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI,                      
   FE_USUA_MODI,                 
   CO_VEND, CO_LIQU, TI_FACT, CO_MODE_DIST, TI_CLIE,                     
   NU_ASTO)                      
   Values  ( @ISCO_EMPR,  @CSTI_DOCU, @CSNU_DOCU, @CSCO_CLIE,                      
   @CSCO_MONE, @CSTI_OPER, @CSCO_COND_PAGO,  @CDFE_EMIS, @ISCO_UNID_CNTB,                       
   @CDFE_VENC , @CDFE_VENC, @CDFE_EMIS, @CNFA_CAMB, @CNIM_AFEC,                      
   @CNIM_INAF, 0, 0, 0, 0, 'N',              
   'N', 'N', 'N', 'N', 'N',                       
   'N', 'N', 'N', 'N',                       
   'N','N', 'N', 'N', 'N',                       
   0, 0, 0, 0, @CSCO_IMP1, @VNPC_IMP1,                
   @CNIM_IMP1, NULL, 0, 0, NULL, 0,                       
   0, @CNIM_TOTA, 0, NULL, NULL,                      
   NULL, 'N' , @CSDE_OBSE,'ACT', @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE(),            
   NULL, NULL, NULL, NULL, NULL,                     
   @VSNU_ASTO)                
             
   If @@error <> 0                      
   Begin                      
    Rollback tran                      
    Return                      
   End                  
                      
   UPDATE #TWDOCC_ERRO_03              
   SET NU_ASTO = @VSNU_ASTO              
   WHERE CO_CLIE  = @CSCO_CLIE AND              
   CO_TIPO_DOCU = @CSTI_DOCU AND              
   NU_DOCU_CLIE = @CSNU_DOCU        
       
   UPDATE TMDOCU_CLIE              
   SET NU_PROC_CARG = @INNU_PROC_CARG              
   WHERE CO_EMPR = @ISCO_EMPR    
   AND CO_CLIE  = @CSCO_CLIE     
   AND CO_TIPO_DOCU = @CSTI_DOCU     
   AND NU_DOCU_CLIE = @CSNU_DOCU            
              
   IF (@@ERROR != 0)                
   Begin                           
    RAISERROR 20001 'ERROR DE INSERCION'                          
    RollBack Tran SP_TMDOCU_PROV_I06                          
    RETURN                          
   End       
     
   SELECT @VSNU_ASTO = ''            
               
                     
  End                  
                 
  If @@error <> 0                              
  Begin                              
   Close CU_TMDOCU_CLIE_I06                              
   Deallocate CU_TMDOCU_CLIE_I06                              
   rollback tran                              
   return                              
  End                              
                        
                      
 Fetch  CU_TMDOCU_CLIE_I06                             
 Into                       
 @CSCO_CLIE  , @CSTI_DOCU  , @CSNU_DOCU  , @CSCO_MONE  , @CDFE_EMIS  , @CDFE_VENC  , @CNFA_CAMB  ,                       
 @CSCO_COND_PAGO  ,  @CSTI_OPER  , @CSDE_OBSE  , @CNIM_AFEC  , @CNIM_INAF  , @CSCO_IMP1  , @CNIM_IMP1  , @CNIM_TOTA  ,                       
 @CSCO_CNTA  ,  @CSTI_AUXI  , @CSCO_AUXI  , @CSCO_ORDE_SERV                
                         
                        
                        
                        
         
  End        
  Close CU_TMDOCU_CLIE_I06                            
  Deallocate CU_TMDOCU_CLIE_I06         
         
         
 SELECT @VSCO_CLIE = NULL, @VSTI_DOCU = NULL, @VSNU_DOCU = NULL, @VNNU_CONT = 0        
        
 Declare CU_TMDOCU_CLIE_I06_1 Cursor For                            
 SELECT         
 CO_CLIE ,  CO_TIPO_DOCU , NU_DOCU_CLIE ,  CO_MONE ,  FE_EMIS ,  FE_VENC ,                        
 FA_CAMB ,  CO_COND_PAGO, CO_TIPO_OPER ,  DE_OBSE,  IM_AFEC ,                        
 IM_INAF ,  CO_IMP1 ,   IM_IMP1,  IM_TOTA,  CO_CNTA_EMPR,  TI_AUXI ,                        
 CO_AUXI ,  CO_ORDE_SERV, PO_DIST                   
 FROM #TWDOCC_ERRO_03                         
                           
 Open  CU_TMDOCU_CLIE_I06_1                             
 Fetch CU_TMDOCU_CLIE_I06_1                             
 Into                       
 @CSCO_CLIE  , @CSTI_DOCU  , @CSNU_DOCU  , @CSCO_MONE  , @CDFE_EMIS  , @CDFE_VENC  , @CNFA_CAMB  ,                       
 @CSCO_COND_PAGO ,  @CSTI_OPER  , @CSDE_OBSE  , @CNIM_AFEC  , @CNIM_INAF  , @CSCO_IMP1  , @CNIM_IMP1  , @CNIM_TOTA  ,                       
 @CSCO_CNTA ,  @CSTI_AUXI  , @CSCO_AUXI  , @CSCO_ORDE_SERV, @CNPO_DIST                      
                       
 While (@@FETCH_STATUS = 0)                              
  Begin                              
   If (@@FETCH_STATUS < 0)                              
    Begin                              
   RAISERROR 20001 'FIN DE ARCHIVO'                              
   Close CU_TMDOCU_CLIE_I06_1                              
   Deallocate CU_TMDOCU_CLIE_I06_1        
   Rollback tran                              
   Return              
    End        
            
        
            
    IF (@VSCO_CLIE + @VSTI_DOCU + @VSNU_DOCU IS NULL OR @VSCO_CLIE + @VSTI_DOCU + @VSNU_DOCU  != @CSCO_CLIE + @CSTI_DOCU + @CSNU_DOCU)        
  SELECT @VNNU_CONT = 0        
        
 ----INICIALIZACIONES                            
 SELECT @VNNU_CONT = @VNNU_CONT + 1         
 SELECT @VSCO_CLIE = @CSCO_CLIE  , @VSTI_DOCU = @CSTI_DOCU  , @VSNU_DOCU = @CSNU_DOCU        
         
         
          
 Insert Into TDDISC_CCOS (CO_EMPR , CO_CLIE, CO_TIPO_DOCU, NU_DOCU_CLIE,                          
 NU_CORR, CO_CENT_COST, CO_CNTA_EMPR, CO_ORDE_SERV, ST_DIST,                          
 PO_DIST, IM_DIST, TI_AUXI_EMPR, DE_OBSE,                    
 CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)                          
 Values  (@ISCO_EMPR, @CSCO_CLIE, @CSTI_DOCU, @CSNU_DOCU,                          
 @VNNU_CONT, @CSCO_AUXI, @CSCO_CNTA, @CSCO_ORDE_SERV, 'M',                          
 100, (@CNIM_AFEC + @CNIM_INAF)*(CONVERT(DECIMAL,@CNPO_DIST)/CONVERT(DECIMAL,100)) , @CSTI_AUXI, @CSDE_OBSE,                       
 @ISCO_USUA_MODI, GETDATE(),@ISCO_USUA_MODI, GETDATE())                          
        
    If @@error <> 0                              
  Begin           
   RAISERROR 20001 'ERROR DE INSERCION'                           
   Close CU_TMDOCU_CLIE_I06_1                              
   Deallocate CU_TMDOCU_CLIE_I06_1        
   RollBack Tran SP_TMDOCU_PROV_I06                              
   return                              
  End        
                   
 Fetch  CU_TMDOCU_CLIE_I06_1        
 Into                       
 @CSCO_CLIE  , @CSTI_DOCU  , @CSNU_DOCU  , @CSCO_MONE  , @CDFE_EMIS  , @CDFE_VENC  , @CNFA_CAMB  ,                       
 @CSCO_COND_PAGO  ,  @CSTI_OPER  , @CSDE_OBSE  , @CNIM_AFEC  , @CNIM_INAF  , @CSCO_IMP1  , @CNIM_IMP1  , @CNIM_TOTA  ,              
 @CSCO_CNTA  ,  @CSTI_AUXI  , @CSCO_AUXI  , @CSCO_ORDE_SERV, @CNPO_DIST                    
        
 End        
         
 Close CU_TMDOCU_CLIE_I06_1        
 Deallocate CU_TMDOCU_CLIE_I06_1       
     
     
         
Commit Tran SP_TMDOCU_CLIE_I06    
    
SELECT @INNU_PROC_CARG   
RETURN     
    
GO
